const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
const operations = require('./db-operations'); // 你的数据库连接池
const pool = new operations();
// 密钥，实际项目中应该放在环境变量中
const JWT_SECRET = 'AA56888';
const JWT_EXPIRES_IN = '24h'; // 令牌有效期

const login = async (req, res) => {
  const { username, password } = req.body;

  try {
    // 1. 验证用户名和密码是否提供
    if (!username || !password) {
      return res.status(400).json({ 
        success: false,
        message: '请输入用户名和密码' 
      });
    }
    console.log("====================",req.body)
    // 2. 查询数据库验证用户
    const [users] = await pool.query(
      'SELECT * FROM sys_user WHERE user_name = ?', 
      [username]
    );
    // 3. 检查用户是否存在
    if (users && users.length === 0) {
      return res.status(401).json({ 
        success: false,
        message: '用户名或密码错误' 
      });
    }

    // 修改点1：正确的访问用户数组第一个元素的密码字段
    const user = users;
    const isPasswordValid = password === user.password;
    if (!isPasswordValid) {
      return res.status(401).json({ 
        success: false,
        message: '用户名或密码错误' 
      });
    }

    // 4. 生成JWT令牌
    const token = jwt.sign(
      { 
        id: user.user_id,
        username: user.user_name,
      },
      JWT_SECRET,
      { expiresIn: JWT_EXPIRES_IN }
    );

    // 5. 返回成功响应和令牌
    res.status(200).json({
      success: true,
      message: '登录成功',
      code: 200,
      token,
      data:{
        user: {
          userId: user.user_id,
          username: user.user_name,
          nickName:user.nick_name
        }
      }
    });

  } catch (error) {
    console.error('登录错误:', error);
    res.status(500).json({ 
      success: false,
      message: '服务器错误，请稍后再试' 
    });
  }
};

module.exports = { login };